package com.kaiwukj.android.ufamily.app.impl;

import android.app.Application;
import android.content.Context;

import androidx.annotation.NonNull;
import androidx.multidex.MultiDex;

import com.alibaba.android.arouter.launcher.ARouter;
import com.blankj.utilcode.util.LogUtils;
import com.kaiwukj.android.mcas.base.delegate.AppLifecycles;
import com.kaiwukj.android.ufamily.BuildConfig;
import com.kaiwukj.android.ufamily.app.constant.Constant;
import com.kaiwukj.android.ufamily.hx.DemoHelper;
import com.kaiwukj.android.ufamily.utils.NineGridImageLoader;
import com.lzy.ninegrid.NineGridView;
import com.zghl.mclient.client.ZghlMClient;
import com.zghl.mclient.client.ZghlStateListener;

import org.jetbrains.annotations.NotNull;

import timber.log.Timber;


/**
 * Copyright © KaiWu Technology Company
 *
 * @author Haife
 * @job Android Development
 * @company KW | 开物科技
 * @time 2019/7/15
 * @desc
 */
public class AppLifecyclesImpl implements AppLifecycles {


    @Override
    public void attachBaseContext(@NotNull Context base) {
        MultiDex.install(base);
    }

    @Override
    public void onCreate(@NotNull Application application) {

        initTimber();
        //initTextFaceType(application);//是否真的需要这个字体(暂时注释:1:字体文件太大(近9M) 2:字体需要版权)
        //qmui arch 初始化
        //  QMUISwipeBackActivityManager.init(application);
        //AutoSize
        // AutoSizeConfig.getInstance().getUnitsManager().setSupportDP(true).setSupportSubunits(Subunits.PT);
        /*-----ARouterSDK初始化Start-----*/
        if (BuildConfig.DEBUG) {           // 这两行必须写在init之前，否则这些配置在init过程中将无效
            ARouter.openLog();     // 打印日志
            ARouter.openDebug();   // 开启调试模式(如果在InstantRun模式下运行，必须开启调试模式！线上版本需要关闭,否则有安全风险)
        }
        ARouter.init(application); // 尽可能早，推荐在Application中初始化
        /*---------ARouterSDK初始化End-----------*/

//        Fragmentation.builder()
//                // 设置 栈视图 模式为 悬浮球模式   SHAKE: 摇一摇唤出   NONE：隐藏
//                .stackViewMode(Fragmentation.BUBBLE)
//                .debug(BuildConfig.DEBUG)
//                // 在遇到After onSaveInstanceState时，不会抛出异常，会回调到下面的ExceptionHandler
//                .handleException(e -> {
//                    // 建议在该回调处上传至我们的Crash监测服务器
//                    // 以Bugtags为例子: 手动把捕获到的 Exception 传到 Bugtags 后台。
//                    // Bugtags.sendException(e);
//                })
//                .install();

        DemoHelper.getInstance().init(application);
        //九宫格图片控件
        NineGridView.setImageLoader(new NineGridImageLoader());

//        智国互联
        initZghl(application);

//        微信

        //初始化布局适配框架
        //AutoSizeUtil.init();
    }

    private void initZghl(Application application) {
        // 设置debug
        ZghlMClient.setDebug(true);
        // 初始化sdk并鉴权  建议在此处授权
        String appId = Constant.isDev ? Constant.ZGHL_APPID_TEST : Constant.ZGHL_APPID;
        String appSecret = Constant.isDev ? Constant.ZGHL_APPSRCRET_TEST : Constant.ZGHL_APPSRCRET;

//        智国AppID
//        本地： 20190411860127
//        测试： 20190802861136
//        生产： 20191014357148
//
//        智国AppSecret
//        本地： 68b0e2c6834ff4bf3a87d9051c39c4e3
//        测试： a1366db2bd2d2c127e01895d754ad6a2
//        生产： 88d9d0c866527fd6892d4fa0f150ffb9

        try {
            ZghlMClient.init(application, appId, appSecret, new ZghlStateListener() {
                @Override
                public void onSuccess(int code, String msg) {
                    LogUtils.i("-------onSuccess----------");
                }

                @Override
                public void onError(int errorCode, String errorMsg) {
                    LogUtils.i("--------------onError: " + errorMsg);

                }
            });
        } catch (Exception e) {
            e.printStackTrace();
            LogUtils.e(e.getLocalizedMessage());
        }
    }

    @Override
    public void onTerminate(@NonNull Application application) {

    }


    private void initTimber() {
        if (BuildConfig.LOG_DEBUG) {
            //Timber日志打印
            Timber.plant(new Timber.DebugTree());
        }
    }


    /**
     * 配置全局字体
     */
    private void initTextFaceType(Application application) {
        /*Typeface typeface = Typeface.createFromAsset(application.getAssets(), "PingFangSC-Regular.ttf");
        try {
            Field field = Typeface.class.getDeclaredField("MONOSPACE");
            field.setAccessible(true);
            field.set(null, typeface);
        } catch (NoSuchFieldException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }*/
    }

}
